Communication networks are well known in the computer and telephony communications fields. By definition, a network is a group of computers and/or devices connected by communications facilities or links. Network communications can be of a permanent nature, such as via cables, or can be of a temporary nature, such as connections made through telephone or wireless links. Networks may vary in size, from a local area network (“LAN”), consisting of a few computers or workstations and related devices, to a wide area network (“WAN”), which interconnects computers and LANs that are geographically dispersed, to a remote access service (“RAS”), which interconnects remote computers via temporary communications links. An internetwork, in turn, is the joining of multiple computer networks, both similar and dissimilar, by means of gateways or routers, that facilitate data transfer and conversion from various networks. A well-known abbreviation for the term internetwork is “internet.” As currently understood, the capitalized term “Internet” refers to the collection of networks and routers that use the Internet Protocol (“IP”), along with higher level protocols, such as the Transmission Control Protocol/Internet Protocol (“TCP/IP”) or the Uniform Datagram Packet/Internet Protocol (“UDP/IP”), to communicate with one another.
The Internet has recently seen explosive growth by virtue of its ability to link computers and devices located throughout the world. Other interactive environments may include proprietary environments, such as those provided by the Microsoft Network (“MSN”) or other online service providers, as well as the “wireless Web” provided by various wireless networking providers, especially those in the cellular phone industry. As will be appreciated from the following description, the present invention could apply in any such interactive environments; however, for purposes of discussion, the Internet is used as an exemplary interactive environment for implementing the present invention.
The Internet has quickly become a popular method of communicating due in large part to its ability to deliver information in a variety of formats. To communicate information over the Internet, a user typically executes a communications program that communicates with other communications programs executing on remote computers that are also connected to the Internet. These conventional communications programs generally utilize a single communications protocol associated with the type of communications program. For example, a video communications program would use a proprietary video communications protocol, and a text chat program would use a proprietary chat communications protocol. Different types of communications protocols are often specific to particular communications programs. Therefore, a textual chat program from one software provider would not necessarily utilize the same chat protocol that a chat program from another software provider would use. Such a proprietary communications environment has led to a myriad of different types of communications and within those types of communications a myriad of different protocols for enabling each type of communication.
Another result of the diversified communications application environment is that as best practices are discovered by a particular software developer and implemented in their communications program, only that communications program benefits from these best practices. Other software developers would need to each individually update their software if it was desired to implement a newly developed “best practice.”
Another drawback with current communications programs is that each application program generally stores contact information only for other users of that particular communications program. Accordingly, when trying to reach a particular user who may be online utilizing a communications program, the process of contacting the user is generally a trial and error process until the correct communications application is located. Furthermore, contact information needs to be reentered for each separate communications program.
A still further drawback of conventional communications programs is that they are generally separate from other applications used in computing environments. For example, while it is possible to concurrently run a video conference and a word processing application, it is generally difficult to run a collaborative word processing session that would include a video communications component in the same application. It is possible to design such applications, however, this capability is equivalent to designing a communications application and a word processing application and then creating the necessary integrations manually. Such manual creations are of a single purpose (e.g., word processing and video conferencing, word processing and text chat, or game play and audio chat). These manual creations are not extensible (e.g., they cannot be updated, modified, or substituted as modular components) and suffer from the drawbacks of maintaining separate contacts. Also, as new types of communications became available, it would be necessary to update such hybrid communications applications manually to include new types or combinations of types of communication.
Accordingly, there is a need for a more flexible and extensible communications environment. It would be desirable to have in a new communications environment the ability to dynamically define a protocol and/or communication type given contact information for a particular user. It would further be desirable to be able to obtain best practices for communications applications in such a manner that all applications adapted to use communications would receive the best practices whenever any communication application obtains them.